/*******************************************************************************
 * @author scl
 * @email shchlu188@163.com
 ******************************************************************************/

#ifndef STM32F103VET6_ESP8266_APP_CONF_INCLUDE_H
#define STM32F103VET6_ESP8266_APP_CONF_INCLUDE_H
#include "sys_core.h"
/* 驱动执行初始化之前-高优先级*/
#define DRIVER_PRE_INIT_H_EXPORT(dr_name, init_fn) sys_used const  fn_base_def_t __pre_fn_##dr_name sys_section(".driver_pre_init.0."#dr_name) = init_fn
/* 驱动执行初始化之前-低优先级*/
#define DRIVER_PRE_INIT_L_EXPORT(dr_name, init_fn) sys_used const  fn_base_def_t __pre_fn_##dr_name sys_section(".driver_pre_init.1."#dr_name) = init_fn
/* 驱动执行初始化*/
#define DRIVER_INIT_EXPORT(dr_name, init_fn) sys_used const  fn_base_def_t __fn_##dr_name sys_section(".driver_init."#dr_name) = init_fn
/* 驱动执行初始化之后*/
#define DRIVER_AFTER_INIT_EXPORT(dr_name, init_fn) sys_used const  fn_base_def_t __after_fn_##dr_name sys_section(".driver_after_init."#dr_name) = init_fn


/*RTOS_MUTEX*/
#define RTOS_MUTEX_EXPORT(name, init_fn) \
            sys_used const  fn_base_def_t __fn_rtos_##name sys_section(".rtos_init.0."#name) = init_fn
/*RTOS_SEMAPHORES*/
#define RTOS_SEMAPHORES_EXPORT(name, init_fn) \
            sys_used const  fn_base_def_t __fn_rtos_##name sys_section(".rtos_init.1."#name) = init_fn
/*RTOS_TIMERS*/
#define RTOS_TIMERS_EXPORT(name, init_fn) \
            sys_used const  fn_base_def_t __fn_rtos_##name sys_section(".rtos_init.2."#name) = init_fn
/*RTOS_QUEUES*/
#define RTOS_QUEUES_EXPORT(name, init_fn) \
            sys_used const  fn_base_def_t __fn_rtos_##name sys_section(".rtos_init.3."#name) = init_fn
/*RTOS_THREADS*/
#define RTOS_THREAD_EXPORT(name, init_fn) \
            sys_used const  fn_base_def_t __fn_rtos_##name sys_section(".rtos_init.4."#name) = init_fn
#endif //STM32F103VET6_ESP8266_APP_CONF_INCLUDE_H
